// Nom : Marc Lopez Baz
// Nom : Carlos Cristoful Rodriguez

import java.io.*;

import javax.swing.JOptionPane;

public class Joc {

	/**
	 * @param args
	 * @throws I
	 *             OException
	 * @throws NumberFormatException
	 */

	public static void omplirFraseTauler(Tauler taulerjoc, int i, int j,
			String frase) {
		char etiqueta;
		for (int k = 0; k < frase.length(); k++) {
			taulerjoc.setCasella(i, j, null, String.valueOf(frase.charAt(k)));
			etiqueta = taulerjoc.getCasella(i, j).getEtiqueta().charAt(0);
			if (etiqueta == ('A')) {
				i++;
			} else if (etiqueta == ('B')) {
				i--;
			} else if (etiqueta == ('D')) {
				j--;
			} else if (etiqueta == ('E')) {
				j++;
			}
			i = Tauler.arreglar_i_j(i, taulerjoc.getWidth());
			j = Tauler.arreglar_i_j(j, taulerjoc.getHeight());
		}
	}

	// metode que s'encarrega d'omplir la frase del taulell segons la etiqueta
	// que conte la casella

	public static void main(String[] args) throws NumberFormatException,
			IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

		int tauler_files;
		int tauler_columnes;
		int colactual;
		int filactual;
		String filename = "";
		String frase_acumulada;
		String linia;
		String fraseAmagada;
		BufferedReader f;
		FinestraJoc partida;
		int opcio_dificultat;

		Tauler taulerjoc;
		// creem el tauler de joc

		System.out.println("Escolleix la dificultat del tauler");
		System.out.println("1-Fàcil");
		System.out.println("2-Normal");

		opcio_dificultat = Integer.parseInt(in.readLine());
		// segons l'opcio cridarem un arxiu o un altre que es trobara dintre de
		// la carpeta del projecte
		switch (opcio_dificultat) {
		case 1:
			filename = "test1.pro";
			break;
		case 2:
			filename = "test2.pro";
			break;
		}
		try {
			f = new BufferedReader(new FileReader(filename));

			// a continuacio utilitzem el metode readline per llegir les
			// linies del fitxer i guardar el contingut
			fraseAmagada = f.readLine(); // llegim la fraseamagada
			int llargada = fraseAmagada.length();
			filactual = Integer.parseInt(f.readLine()); // fila d'inici
			colactual = Integer.parseInt(f.readLine()); // columna d'inici
			tauler_files = Integer.parseInt(f.readLine());// fil del tauler
			tauler_columnes = Integer.parseInt(f.readLine());// col del tauler
			taulerjoc = new Tauler(tauler_files, tauler_columnes, filactual,
					colactual);
			// creem el taulerjoc un cop obtenim les dades del fitxer

			for (int i = 0; i < tauler_files; i++) { //
				linia = f.readLine();
				for (int j = 0; j < tauler_columnes; j++) {
					taulerjoc.creaCasella(
							new Casella(String.valueOf(linia.charAt(j)), null),
							i, j);
				}
			}

			// llegim les etiquetes de la matriu i les assignem a la casella
			// corresponent

			omplirFraseTauler(taulerjoc, filactual, colactual, fraseAmagada);
			// omplim el taulell amb totes les dades del fitxer
			taulerjoc.getCasella(filactual, colactual).obrir();
			frase_acumulada = new String(taulerjoc.getCasella(filactual,
					colactual).getLletra());
			
			partida = new FinestraJoc("Descobreix el missatge!", taulerjoc,
					fraseAmagada);
			
		} catch (FileNotFoundException e) {
			System.out.println("El fitxer no existeix!!");

		} catch (NumberFormatException e) {
			System.out.println("El fitxer no es correcte!!");

		}
		
	}

}

// fi de la classe